package com.sailors.common.task.provider.faced.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.sailors.common.task.provider.infra.design.common.util.calculate.Exp4jCalculateInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 文件任务详情
 *
 * @description:
 * @author: cyj
 * @date 2022 -11-22 17:16:47
 */
@Data
@ApiModel("文件任务详情")
public class FileTaskLogDetailVo  implements Exp4jCalculateInfo {

    /**
     * Id
     */
    @ApiModelProperty(value = "Id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * 服务名称
     */
    @ApiModelProperty(value = "服务名称")
    private String serviceName;
    /**
     * 业务类型
     */
    @ApiModelProperty(value = "业务类型")
    private String bussinessName;
    /**
     * 任务文件名称
     */
    @ApiModelProperty(value = "任务文件名称")
    private String taskFileName;
    /**
     * 任务类型: 1-导入 2-导出
     */
    @ApiModelProperty(value = "任务类型: 1-导入 2-导出")
    private Integer taskType;
    /**
     * 是否异步：0-否 1-是
     */
    @ApiModelProperty(value = "是否异步：0-否 1-是")
    private Integer async;
    /**
     * 状态:  0-进行中 1-成功 2-失败
     */
    @ApiModelProperty(value = "状态:  0-进行中 1-成功 2-失败")
    private Integer status;
    /**
     * 失败原因
     */
    @ApiModelProperty(value = "失败原因")
    private String reason;
    /**
     * 数据量
     */
    @ApiModelProperty(value = "数据量")
    public BigDecimal count;
    /**
     * 失败原因 下载地址
     */
    @ApiModelProperty(value = "失败原因 下载地址")
    private String reasonUrl;
    /**
     * 源文件下载地址
     */
    @ApiModelProperty(value = "源文件下载地址")
    private String sourceFileUrl;
    /**
     * 成功源文件下载地址
     */
    @ApiModelProperty(value = "成功源文件下载地址")
    private String successFileUrl;
    /**
     * 任务结束时间
     */
    @ApiModelProperty(value = "任务结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone ="GMT+8",shape = JsonFormat.Shape.STRING)
    private Date overTime;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone ="GMT+8",shape = JsonFormat.Shape.STRING)
    private Date createTime;
    /**
     * 当前进度
     */
    @ApiModelProperty(value = "当前进度")
    public BigDecimal nowProcess;
    /**
     * 完成数据量
     */
    @ApiModelProperty(value = "完成数据量")
    private Long finishCount;
    /**
     * 历史进度集合
     */
    @ApiModelProperty(value = "历史进度集合")
    private List<TaskProLogVo> taskProLogVos;

    @Override
    @JsonIgnore
    public Integer scale() {
        return 0;
    }

    @Override
    @JsonIgnore
    public String getExpression() {
        return "(nowProcess / 100) * count";
    }
}
